Zárva. Ehhez a kérdéshez részletekre vagy egyértelműségre van szükség. Jelenleg nem fogadja el a válaszokat. Szeretne javítani ezen a kérdésen? Adjon meg részleteket és tisztázza a problémát a bejegyzés szerkesztésével. 1 éve zárva. Javítsa ezt a kérdést Néhány kódkihívást végzek, és szeretném megszerezni a tömbömből az első 3 értéket azzal, hogy megadom a kezdő indexet, és csak az első (3 vagy bármilyen hosszúságú lehet) értéket kapom a kezdő indexből. Kipróbáltam ezt a kódot, és működik, de a kódstruktúra túl hosszú, így hogyan lehet ezt rövidebbé tenni, hogy könnyen érthető legyen. int n = 10; kettős aláírás = új kettős [] {1, 1, 1}; kettős [] ret = új kettős [n]; kettős összeg = 0; ret [0] = aláírás [0]; ret [1] = aláírás [1]; ret [2] = aláírás [2]; int x, i; for (i = 0; i
2021-01-31 08:20:02
A LINQ használatával ilyet próbálhat ki: var értékek = tömb. Átugrani (index) .Vegyük (n) .ToArray (); Ahol az index az első elem mutatója, és n a kiválasztani kívánt elemek száma. Például. https://dotnetfiddle.net/Pk1rwY Mellékesen. A LINQ használata nem jelenti azt, hogy a kód gyorsabb lenne. Kompaktabb / olvashatóbb lenne stb. Annak érdekében, hogy felmérje, mennyire teljesítő a kódja, olyasmit kell használnia, mint a BenchmarkDotNet. | Nincs Linq megoldás: privát statikus T [] Kivonat(T [] forrás, int fromIndex, int hossz) { if (null == forrás) dobja az új ArgumentNullException (név (forrás)); else if (fromIndex <0) dobja az új ArgumentOutOfRangeException (nameof (fromIndex) nevet, "From Indexnek nem negatívnak kell lennie"); else if (hossz <0) dobja új ArgumentOutOfRangeException (nameof (hossz), "A hossznak nem negatívnak kell lennie"); if (fromIndex> = forrás.Hossz || hossz == 0) return new T [0]; T [] eredmény = új T [Math.Min (hossz, forrás.Length - fromIndex)]; Array.Copy (forrás, fromIndex, eredmény, 0, result.Length); visszatérési eredmény; } Azután kettős [] aláírás = új kettős [] {0, 1, 2, 3, 4, 5}; kettős [] ret = Kivonat (aláírás, 3, 2); Console.Write (string.Join (",", ret)); Eredmény: 3, 4 | Kérdéséből ki kell használnia az .Take és .Skip operátorok előnyeit. var result = tömb.Skip (kezdőIndex) .Take (numberOfElements); Így a kódod alapján úgy tűnik, hogy egy kicsit mást szeretnél csinálni, nevezetesen az összegző elemeket. A .Sum operátor itt segíthet. | Nem a keresett válasz? Böngésszen a c # arrays linq címkével ellátott többi kérdésben, vagy tegye fel a saját kérdését.